// 团队
import {queryTeamOrders} from '@/api/order'
import moment from 'moment'
import { Indicator } from 'mint-ui'

export default {
  namespaced: true,
  state: {
    startDate: moment().startOf('month'), // 开始时间  默认为本月开始
    endDate: moment(), // 结束时间  默认为今日
    orderSum: 0, // 团队 订单总数 默认 0
    sale: 0, // 团队 销售额 默认 0
    income: 0, // 团队 默认 0
    orderList: [], // 团队 列表
    loading: false, // 正在加载中
    loadend: false, // 是否已全部加载完毕
    page: 0, // 分页加载列表 页码
    query: 10 // 分页加载列表 每次10条
  },

  mutations: {
    // 设置开始时间
    SET_START_DATE: (state, date) => {
      state.startDate = date
    },
    // 设置结束时间
    SET_END_DATE: (state, date) => {
      state.endDate = date
    },
    // 设置订单总数
    SET_ORDER_SUM: (state, num) => {
      state.orderSum = num
    },
    // 设置销售总金额
    SET_SALE: (state, num) => {
      state.sale = num // 10000.00
    },
    // 设置总收益
    SET_INCOME: (state, num) => {
      state.income = num // 100.00
    },
    // 设置个人订单列表
    SET_ORDER_LIST: (state, list) => {
      state.orderList = list // 数组
    },
    // 设置加载页码
    SET_PAGE: (state, page) => {
      state.page = page // 0 1 2 3
    },
    // 设置正在加载中
    SET_LOADING: (state, bool) => {
      state.loading = bool
    },
    // 设置列表加载完毕
    SET_LOADEND: (state, bool) => {
      state.loadend = bool
    }
  },

  getters: {},

  actions: {
    /** 获取用户团队订单
     * 传递 用户token / 开始时间字符串 / 结束时间字符串 / 分页查询量 / 分页位置 如：
     *  {
     *  token: '6d9b08f0-e50f-4cc0-90c3-4918183c3945',
    *  start: '2018-04-01 00:00:00.000+08:00', // 2018-4-1
     *  end: '2018-04-14 23:59:59.999+08:00', // 2018-4-14
     *  num: 20 ,// 查询20条
     *  page: 0 // 第0页
     *  }
     *  返回 该时间段内 销售额 / 收益 / 该时间段内订单总数 / 分页获取的订单详情 如 :
     *  {
     *    sale: 10000.00,  // 销售额
     *    income: 100.00   // 收益
     *    orderSum: 312,   // 该时间段内的订单总数
     *    orderList: [     // 订单详情
     *       {
     *         id: '7b5f5bdb-1269-4e50-9719-86754a8fec3f',
     *         sale: 200.00, // 销售额
     *         income: 10.00 // 收益
     *         userId: '7b5f5bdb-1269', //用户id
     *         userNick: '晴天', // 用户昵称
     *         userStarLevel: 2, // 用户星级
     *         userAvatar: 'https://placeimg.com/80/80/any?random=123' // 头像
     *         date: '2018-04-13 09:30:26.123+08:00' // 成交时间
     *       },
     *       {
     *         id: '7b5f5bdb-1269-4e50-9719-86754a8fec3f',
     *         sale: 200.00, // 销售额
     *         income: 10.00 // 收益
     *         userId: '7b5f5bdb-1269', //用户id
     *         userNick: '阴天', // 用户昵称
     *         userStarLevel: 2, // 用户星级
     *         userAvatar: 'https://placeimg.com/80/80/any?random=234' // 头像
     *         date: '2018-04-13 09:30:26.123+08:00' // 成交时间
     *       },
     *       ...
     *    ]
     *  }
     */
    QueryTeamOrders ({state, commit, rootState}) {
      return new Promise((resolve, reject) => {
        commit('SET_LOADING', true)
        let {startDate: start, endDate: end, query: num, page} = state
        const token = rootState.main.token
        start = start.toISOString(true)
        end = end.toISOString(true)
        Indicator.open()
        queryTeamOrders({token, start, end, num, page}).then(response => {
          const data = response.data
          commit('SET_ORDER_SUM', data.orderSum) // 订单总数
          commit('SET_SALE', data.sale) // 总销售额
          commit('SET_INCOME', data.income) // 总收益
          commit('SET_ORDER_LIST', state.orderList.concat(data.orderList)) // 订单列表
          commit('SET_PAGE', ++page) // 更新页码
          commit('SET_LOADING', false) // 改为 不是正在加载中
          // 判断一下 是否全部加载完毕 依据是加载过来的订单列表数量 是否 和 声明的订单数量一样
          if (state.orderList.length >= data.orderSum) {
            commit('SET_LOADEND', true)
          }
          Indicator.close()
          resolve()
        }).catch(error => {
          Indicator.close()
          commit('SET_LOADING', false)
          reject(error)
        })
      })
    },
    // 设置时间范围
    SetDateRange ({commit}, range) {
      commit('SET_START_DATE', range.startDate)
      commit('SET_END_DATE', range.endDate.endOf('day'))
    },
    // 重新查询
    ReQueryTeamOrders ({dispatch, commit}) {
      commit('SET_ORDER_SUM', 0) // 订单总数
      commit('SET_SALE', 0) // 总销售额
      commit('SET_INCOME', 0) // 总收益
      commit('SET_ORDER_LIST', []) // 订单列表
      commit('SET_PAGE', 0) // 更新页码
      commit('SET_LOADING', false) // 改为 不是正在加载中
      commit('SET_LOADEND', false)
      // 重新发起请求
      dispatch('QueryTeamOrders')
    }
  }
}
